﻿using Ninject.Modules;
using Soundteller.AudioVisual.Model;
using Soundteller.AudioVisual.Model.Interfaces;
using Soundteller.AudioVisual.Repositories;
using Soundteller.AudioVisual.Repositories.Interfaces;
using Soundteller.AudioVisual.Services;
using Soundteller.AudioVisual.Services.Interfaces;

namespace Soundteller.AudioVisual
{
    public class AudioVisualModule : NinjectModule
    {
        public override void Load()
        {
            Bind<IMemoryContext>().To<MemoryContext>().InSingletonScope();

            Bind<IPadRepository>().To<PadRepository>().InSingletonScope();

            Bind<IPadToucher>().To<PadToucher>().InSingletonScope();
            Bind<ISoundtellerInitializer>().To<SoundtellerInitializer>().InSingletonScope();
            Bind<ISoundtellerDrawer>().To<SoundtellerDrawer>().InSingletonScope();
            Bind<IPadStateUpdater>().To<PadStateUpdater>().InSingletonScope();
            Bind<IPadStateResetter>().To<PadStateResetter>().InSingletonScope();
        }
    }
}